﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;



namespace Dziennik_ProfilNauczyciela {
    partial class Form_WidokNauczyciela : Form {
        List<TreeNode_Odbiorca> UkryciUczniowie = new List<TreeNode_Odbiorca>();
        List<TreeNode_Odbiorca> UkryciNauczyciele = new List<TreeNode_Odbiorca>();
        List<TreeNode_Odbiorca> UkryciOpiekunowie = new List<TreeNode_Odbiorca>();
        List<RekordTabeliWiadomosci> UkryteWiadomosci = new List<RekordTabeliWiadomosci>();
        
        void Wyszukaj(string s) {
            PokazWezly(s);
            treeView_Odbiorcy.Sort();
            if (s == "") {
                treeView_Odbiorcy.CollapseAll();
            }
            else {
                UkryjWezly(s);
                treeView_Odbiorcy.ExpandAll();
            }
        }

        void UkryjWezly(string s) {
            for (int i = treeView_Odbiorcy.Nodes[0].Nodes.Count - 1; i >= 0; i--) {
                if (!treeView_Odbiorcy.Nodes[0].Nodes[i].Text.ToLower().Contains(s.ToLower())) { //jeśli węzeł nie zawiera szukanego stringa
                    UkryciNauczyciele.Add((TreeNode_Odbiorca)treeView_Odbiorcy.Nodes[0].Nodes[i]);//dodajemy go do ukrytych
                    treeView_Odbiorcy.Nodes[0].Nodes[i].Remove();
                }
            }

            for (int i = treeView_Odbiorcy.Nodes[1].Nodes.Count - 1; i >= 0; i--) {//opiekunowie
                if (!treeView_Odbiorcy.Nodes[1].Nodes[i].Text.ToLower().Contains(s.ToLower())) {
                    UkryciOpiekunowie.Add((TreeNode_Odbiorca)treeView_Odbiorcy.Nodes[1].Nodes[i]);
                    treeView_Odbiorcy.Nodes[1].Nodes[i].Remove();
                }
            }

            for (int i = 0; i != treeView_Odbiorcy.Nodes[2].Nodes.Count; i++) { //dla wszystkich klas po kolei
                for (int j = treeView_Odbiorcy.Nodes[2].Nodes[i].Nodes.Count - 1; j >= 0; j--) {
                    if (!treeView_Odbiorcy.Nodes[2].Nodes[i].Nodes[j].Text.ToLower().Contains(s.ToLower())) {
                        treeView_Odbiorcy.Nodes[2].Nodes[i].Nodes[j].Tag = treeView_Odbiorcy.Nodes[2].Nodes[i].Text;
                        UkryciUczniowie.Add((TreeNode_Odbiorca)treeView_Odbiorcy.Nodes[2].Nodes[i].Nodes[j]);
                        treeView_Odbiorcy.Nodes[2].Nodes[i].Nodes[j].Remove();
                    }
                }
            }
        }
        void PokazWezly(string s) {
            for (int i = UkryciNauczyciele.Count - 1; i >= 0; i--) {
                if (UkryciNauczyciele[i].Text.ToLower().Contains(s.ToLower())) {
                    treeView_Odbiorcy.Nodes[0].Nodes.Add(UkryciNauczyciele[i]);
                    UkryciNauczyciele.RemoveAt(i);
                }
            }
            for (int i = UkryciOpiekunowie.Count - 1; i >= 0; i--) {
                if (UkryciOpiekunowie[i].Text.ToLower().Contains(s.ToLower())) {
                    treeView_Odbiorcy.Nodes[1].Nodes.Add(UkryciOpiekunowie[i]);
                    UkryciOpiekunowie.RemoveAt(i);
                }
            }
            //jeszcze tylko dodawanie uczniow
            for (int i = UkryciUczniowie.Count - 1; i >= 0; i--) {
                if (UkryciUczniowie[i].Text.ToLower().Contains(s.ToLower())) {
                    string klasa = (string)UkryciUczniowie[i].Tag;
                    for (int j = 0; j != treeView_Odbiorcy.Nodes[2].Nodes.Count; j++) {
                        if (treeView_Odbiorcy.Nodes[2].Nodes[j].Text == klasa) {
                            treeView_Odbiorcy.Nodes[2].Nodes[j].Nodes.Add(UkryciUczniowie[i]);
                            UkryciUczniowie.RemoveAt(i);
                            break;
                        }
                    }
                }
            }
        }
    }
}